<?php
class EmpresaHelper {
	
	const DISTRIBUIDOR = 1;
	const SUB_DISTRIBUIDOR = 2;
	const CANAL = 3;
	const PUNTO_DE_VENTA = 4;
	
	public static function obtenerNivelEmpresa($empresa) {
		if(!$empresa){
			return null;
		}
		$command=Yii::app()->db->createCommand("SELECT n.*  FROM `nivel` n INNER JOIN `empresa` e ON e.nivel_id = n.id WHERE e.id = :empresa_id AND e.activo=1 LIMIT 1");
		$command->setFetchMode(PDO::FETCH_OBJ);
		$command->bindParam(":empresa_id",$empresa->id,PDO::PARAM_INT);
		$nivel=$command->queryRow();
		
		return $nivel;
	}	
	public static function obtenerNivelEmpresaDependiente($empresa) {
		$nivel=EmpresaHelper::obtenerNivelEmpresa($empresa);
		if(!$nivel){
			return Nivel::model()->findByPk(EmpresaHelper::DISTRIBUIDOR);
		}
		$nivelDependiente=$nivel->id+1;
		if($nivelDependiente>=5){
			return null;
		}
		return Nivel::model()->findByPk($nivelDependiente);
	}
	
	public static function obtenerNivelUsuarioAutenticado() {
		static $nivel=null,$puesto=false;
	
		if(!$puesto){		
			if(Yii::app()->user->checkAccess(PerfilHelper::ADMINISTRADOR_SISTEMA)){
				return null;
			}elseif(Yii::app()->user->checkAccess(PerfilHelper::PRIMER_ADMINISTRADOR)||Yii::app()->user->checkAccess(PerfilHelper::CONSULTA)){
				$command=Yii::app()->db->createCommand("SELECT n.*  FROM `nivel` n INNER JOIN `empresa` e ON e.nivel_id = n.id INNER JOIN `usuario_empresa` ue ON ue.empresa_id = e.id WHERE ue.usuario_id = :usuario_id AND e.activo=1 LIMIT 1");
				$command->setFetchMode(PDO::FETCH_OBJ);
				$id_usuario=Yii::app()->user->id;
				$command->bindParam(":usuario_id",$id_usuario,PDO::PARAM_INT);
				$nivel=$command->queryRow();
				
				//$nivel=Nivel::model()->findByPk($nivel['id']);
			}
		}
		$puesto=true;
	
		return $nivel;
	}
	public static function esUltimoNivel($nivel) {
		if(!$nivel){
			return false;
		}
		return $nivel->id==4;
	}
	public static function obtenerSiguienteNivelUsuarioAutenticado() {
		static $nivel=null,$puesto=false;
		if(!$puesto){
			$nivelActual=EmpresaHelper::obtenerNivelUsuarioAutenticado();
			if($nivelActual){
				if(EmpresaHelper::esUltimoNivel($nivelActual)){
					$nivel=null;
				}else{
					$id_nivel_siguiente=$nivelActual->id+1;
					$nivel=Nivel::model()->findByPk($id_nivel_siguiente);
				}
			}else{
				$nivel=Nivel::model()->findByPk(1);
			}
		}
		$puesto=true;
	
		return $nivel;
	}
	
	public static function obtenerNombreNivelPluralUsuarioAutenticadoMinusculas() {
		$nivel=EmpresaHelper::obtenerNivelUsuarioAutenticado();
		if($nivel){
			return strtolower($nivel->plural);
		}
		return "empresas";
	}
	public static function obtenerNombreNivelSingularUsuarioAutenticadoMinusculas() {
		$nivel=EmpresaHelper::obtenerNivelUsuarioAutenticado();
		if($nivel){
			return strtolower($nivel->nombre);
		}
		return "empresa";
	}
	
	public static function obtenerNombreNivelDependientePluralUsuarioAutenticadoMinusculas() {
		$nivel=EmpresaHelper::obtenerSiguienteNivelUsuarioAutenticado();
		if($nivel){
			return strtolower($nivel->plural);
		}
		return "empresas";
	}
	public static function obtenerNombreNivelDependienteSingularUsuarioAutenticadoMinusculas() {
		$nivel=EmpresaHelper::obtenerSiguienteNivelUsuarioAutenticado();
		if($nivel){
			return strtolower($nivel->nombre);
		}
		return "empresa";
	}
	public static function verificarAccesoEmpresaDependiente($empresa_id) {
		return false;
		$id_usuario=Yii::app()->user->id;
		$usuarios=Usuario::model()->findAllBySql("SELECT ue.*  FROM `usuario_empresa` ue INNER JOIN `empresa` e ON ue.empresa_id=e.id  WHERE ue.empresa_id = :empresa_id AND e.activo=1", array(
			':empresa_id'=>(int)$id,
		));
				
		$command=Yii::app()->db->createCommand("SELECT e.*  FROM `empresa` e INNER JOIN `usuario_empresa` ue ON ue.empresa_id = e.id  WHERE ue.usuario_id = :usuario_id AND e.activo=1 LIMIT 1");
		$command->setFetchMode(PDO::FETCH_OBJ);
		$command->bindParam(":usuario_id",$id,PDO::PARAM_INT);
		$empresa=$command->queryRow();
		
	}
	
	
}